package com.minshenglife.zanzan.service;

import java.util.List;
import java.util.Map;

import com.minshenglife.commons.dal.Page;
import com.minshenglife.zanzan.entity.Dept;
import com.minshenglife.zanzan.entity.User;
import com.minshenglife.zanzan.result.UserResult;


/**
 * 用户service
 * @author huodd
 *
 */

public interface UserService {
	
	/**
	 * 获取红花数
	 * @param empId
	 * @return
	 */
	public Double getRedFlowerNum(String empId);
	/**
	 * 获取积分数
	 * @param empId
	 * @return
	 */
	public Long getIntegralNum(String empId);
	/**
	 * 更新红花数
	 * @param empId
	 * @return
	 */
	public void updateRedFlowerNum(String empId,Double redFlowerNum);
	/**
	 * 更新积分数
	 * @param empId
	 * @return
	 */
	public void updageIntegralNum(String empId,Long integralNum);
	/**
	 * 绑定/解除微信号
	 * @param LWCode
	 * @return
	 */
	public void updageLWCode(String empId,String LWCode);
	/**
	 * 获取用户信息
	 * @param empId
	 * @return
	 */
	public User getUserInfo(String empId);
	
	public Dept getUserDept(String dept_id);
	/**
	 * 获取用户信息by用户OpendId
	 * @param wxCode
	 * @return
	 */
	public User getUserByWXCode(String wxCode);
	/**
	 * 获取用户信息by用户userName
	 * @param userName
	 * @return
	 */
	public List<User> getUserByUserName(String userName);
	/**
	 * 更新用户信息
	 * @param user
	 */
	public void updateUserInfo(User user);
	/**
	 * 是否是公司员工(微信绑定前验证)
	 * @param empId
	 * @param idno
	 */
	public boolean isUser(String empId,String idno);
	/**
	 * 该微信号是否已被他人绑定
	 * @param LWCode
	 * @return
	 */
	public boolean isExistOfLWCode(String LWCode);
	
	/**
	 * 红花榜
	 * @param map
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public Page<User> findFlowerRankList(Map<String,Object> map,int pageNo,int pageSize);
	/**
	 * 送花榜
	 * @param map
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public Page<User> findSendFlowerRankList(Map<String,Object> map,int pageNo,int pageSize);
	
	/**
	 * 积分榜
	 * @param map
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public Page<User> findIntegralRankList(Map<String,Object> map,int pageNo,int pageSize);
	/**
	 * 更新用户积分数（幸运抽奖专用）
	 * @param openId
	 * @param num
	 */
	public void updateUserIntegralNumOfLuckDraw(String openId, int num);

	/**
	 * 更新用户积分数（花落谁家专用）
	 * @param openId
	 * @param num
	 */
	public void updateUserIntegralNumOfGame(String openId);
	
	/**
	 * 更新用户可送红花数（幸运抽奖专用）
	 * @param openId
	 * @param num
	 */
	public void updateUserCanSendFlowerNumOfLuckDraw(String openId, int num);
	/**
	 * 更新用户可吐槽数（幸运抽奖专用）
	 * @param openId
	 * @param num
	 */
	public void updateUserCanTuCaoNumOfLuckDraw(String openId, int num);

	/**
	 * 获取用户信息by用户openId
	 * @param userName
	 * @return
	 */
	public String getUserIdByOpenId(String openId);
	
	/**
	 * 初始加载赠送人页面本科室的员工信息
	 * @param empId
	 * @return
	 */
	public List<UserResult> initSearchEmpInfoList(String empId);
	
	/**
	 * 模糊查询员工信息，可以输入员工号、员工名称、部门名称
	 * @param content
	 * @return
	 */
	public List<UserResult> findEmpInfoList(String content);
	
	/**
	 * 员工解除绑定
	 * @param empId
	 */
	public void EmpUnbound(String empId);
	
	/**
	 * 批处理执行 离职但没有解绑的用户 给解除绑定
	 */
	public boolean batchLeaveAndNotUnbindEmpInfo();
	
	
	/**
	 * 特别关系
	 * @param isCare
	 * @param operator 关心人
	 * @param empId 被关心人
	 */
	public void specialCare(boolean isCare, String operator, String empId);
	
	
	public User getEmpUser(String empId); 
}
